package scu.maqiang.neuralnetwork;


import scu.maqiang.neuralnetwork.math.Linear;

/**
 *
 * 输入神经元
 * 这个类继续自神经元Neuron, 因为对于神经元来说, 它是一个特殊的情况,
 * 位于神经网络的输入层
 * 
 * @author Alan de Souza, Fábio Soares
 * @version 0.1
 */
public class InputNeuron extends Neuron {
    
    /**
     *  构造函数
     * 
     * @see InputNeuron
     */
    public InputNeuron(){
        //输入神经元的输入值个数为1
        super(1);
        //激活函数为线性, 倍数为1, 即是输入值本身
        setActivationFunction(new Linear(1));
        //偏置为1
        bias=0.0;


    }
    
    /**
     * 初始化
     * 为输入神经元的初始化方法, 设置权重为1.0, 偏置为0
     * 这种神经元的输出为ax + b = 1 * x + 0.0 = x
     * 
     * @see InputNeuron
     */
    @Override
    public void init(){
        try{
            this.weight.set(0, 1.0);
            this.weight.set(1, 0.0);
        }
        catch(IndexOutOfBoundsException iobe){
            this.weight.add(1.0);
            this.weight.add(0.0);
        }
    }
    
}
